package com.bootemp.service;

import com.bootemp.bean.Dept;
import com.bootemp.bean.Emp;
import com.bootemp.mapper.EmpMapper;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.io.*;
import java.util.List;
@Service
public class EmpService implements EmpMapper {
    @Resource
    public EmpMapper em;
    @Override
    public int insert(Emp e) {
        return em.insert(e);
    }

    @Override
    public List<Emp> all(String path) {
        //将查询的数据装入集合中，再将图片信息写入服务器路径
        List<Emp> data=em.all(path);
        for (Emp e:
             data) {
            //文件复制
            fileCopy(e,path);
            //清空头像
            e.setEpic2(null);
        }
        return data;
    }

    /**
     * 文件复制
     * @param e
     * @param path
     */
    public static void fileCopy(Emp e,String path){
        //文件输入汉
        InputStream is=e.getEpic2();
        try {
            //输出流
            OutputStream os=new FileOutputStream(new File(path+"/"+e.getEpic()));
            //字节数组
            byte d[]=new byte[1024];
            if (is!=null){
                //读取  读取的数据装入缓冲区，返回类型为缓冲区的大小
                int len=is.read(d);
                while (len!=-1){
                    //写
                    os.write(d,0,len);
                    //再读
                    len=is.read(d);
                }
                //关闭资源
                os.close();
                is.close();
            }
        } catch (FileNotFoundException ex) {
            throw new RuntimeException(ex);
        } catch (IOException ex) {
            throw new RuntimeException(ex);
        }
    }
    @Override
    public int delete(int id) {
        return em.delete(id);
    }

    @Override
    public Emp one(int id) {
        Emp e=em.one(id);
        e.setEpic2(null);
        return e;
    }

    @Override
    public int update(Emp e) {
        return em.update(e);
    }

    @Override
    public int update2(Emp e) {
        return em.update2(e);
    }

    @Override
    public List<Emp> allEmp(String path) {
        List<Emp> data=em.allEmp(path);
        for (Emp e:
             data) {
            fileCopy(e,path);
            e.setEpic2(null);
        }
        return data;
    }

    @Override
    public List<Dept> allDept(String path) {
        List<Dept> data=em.allDept(path);
        for (Dept d:
             data) {
            //一个部门有多个员工
            for (Emp e:
                d.getE() ) {
                fileCopy(e,path);
                e.setEpic2(null);
            }
        }
        return data;
    }
}
